package se.study.io.file;

import java.io.File;
import java.io.IOException;
import java.net.URI;
/*
 * File类：文件和目录路径名的抽象表示。
 * 注意：File 类只能操作文件的属性，文件的内容是不能操作的。
 */

/**
 * @Author: tiger
 * @Date:2018/5/8
 * @Description:File处理学习
 */
public class FileStudy {
    public static void main(String[] args) {
//        createFile();
//        fileMethodTest();
        printFileList("C:\\Users\\Administrator\\Desktop\\SpringBoot2");
    }

    private static void fileMethodTest() {
        File file = new File("C:\\Users\\Administrator\\Desktop\\test2\\create.txt");
        try {
            URI uri = file.toURI();
            System.out.println("uri：" + uri);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void createFile() {
        File file = new File("C:\\Users\\Administrator\\Desktop\\test1\\create.txt");
        try {
            file.createNewFile();// 不存在返回true 存在返回false
            file.mkdir();// 创建目录，如果上一级目录不存在，则会创建失败
            file.mkdirs();// 创建多级目录，如果上一级目录不存在也会自动创建
            System.out.println("文件大小：" + file.getTotalSpace() / (1024 * 1024 * 1024) + "G");
            System.out.println("文件名称：" + file.getName());
            System.out.println("绝对路径：" + file.getAbsolutePath());
            System.out.println("路径：" + file.getPath());
            System.out.println("所在文件夹：" + file.getParent());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 打印给定目录下的所有文件夹和文件夹里面的内容
     */
    public static void printFileList(String path) {
        File file = new File(path);
        String fileName = file.getName();
        if (file.isDirectory()) {
            // 文件夹
            File[] files = file.listFiles();
            for (File cFile : files) {
                String cFileAbsolutePath = cFile.getAbsolutePath();
                printFileList(cFileAbsolutePath);
            }
        } else {
            // 文件
            System.out.println(fileName);
        }
    }
}
